﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

namespace Etapa1.SofRender
{

    public interface HullShader
    {
        float[] ConstantHS(VertexType[] CntPoints, float patchId);
        VertexType MainHS(VertexType[] CntPoints, int curPntId, float patchId);         
    }
    
    public interface DomainShader
    {        
        VertexType MainDS(float[] tessFactors, Vector3 BarycentricCoordinatesGenerated, VertexType[] CntPoints);
    }

    //public struct OutputHs
    //{
    //    public OutputHs(VertexType v0, float tf0, VertexType v1, float tf1, VertexType v2 , float tf2)
    //    {
    //        Vertices = new VertexType[3];
    //        TesselatorFactors = new float[3];
    //        Vertices[0] = v0;
    //        Vertices[1] = v1;
    //        Vertices[2] = v2;
    //        TesselatorFactors[0] = tf0;
    //        TesselatorFactors[1] = tf1;
    //        TesselatorFactors[2] = tf2;
    //    }        
            
    //    public VertexType[] Vertices;
    //    public float[] TesselatorFactors;
    //}

    //public enum HullShaderParameters
    //{
    //    PrimitiveID
    //}


    [global::System.AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
    sealed class HullShaderAttribute : Attribute
    {
        int outputcontrolpoints;

        public int Outputcontrolpoints
        {
            get { return outputcontrolpoints; }
            set { outputcontrolpoints = value; }
        }
        public HullShaderAttribute(int outputcontrolpoints)
        {
            this.outputcontrolpoints = outputcontrolpoints;
        }
    }

}
